/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package eeep.dao;

import eeep.entidades.Endereco;
import eeep.entidades.Escola;
import eeep.entidades.Pessoa;
import eeep.util.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *
 * @author Joao
 */
public class EnderecoDAO {
    
    public void salvarEndereco(Endereco endereco){
        String sql = "INSERT INTO endereco(cidade_endereco,bairro_endereco,rua_endereco,numero_endereco) "
                + "values(?,?,?,?)";

        Connection conn = null;
        PreparedStatement pstm = null;
        try {
            // Cria uma conexão com o banco
            conn = ConnectionFactory.getConexao();

            // Cria um PreparedStatment, classe usada para executar a query
            pstm = conn.prepareStatement(sql);

            // Adiciona o valor aos parametros da sql
            pstm.setString(1, endereco.getCidade());
            pstm.setString(2, endereco.getBairro());
            pstm.setString(3, endereco.getRua());
            pstm.setString(4, endereco.getNumero());
            

            // Executa a sql para inserir os dados
            pstm.execute();

        } catch (Exception e) {

            e.printStackTrace();
        } finally {

            // Fecha as coneções
            try {
                if (pstm != null) {

                    pstm.close();
                }

                if (conn != null) {
                    conn.close();
                }

            } catch (Exception e) {

                e.printStackTrace();
            }
        }
    }
    public Endereco getEnderecoPorEscola(Escola escola){
        String sql = "Select rua_endereco,cidade_endereco,bairro_endereco,numero_endereco \n" +
        "From endereco as en,escola as es\n" +
        "Where  en.id_endereco=es.id_endereco and login_escola=?";

		

		Connection conn = null;
		PreparedStatement pstm = null;
		// Classe que vai recuperar os dados do banco de dados
		ResultSet rset = null;

		try {
			conn = ConnectionFactory.getConexao();

			pstm = conn.prepareStatement(sql);
                        pstm.setString(1, escola.getLogin());

			rset = pstm.executeQuery();

			// Enquanto existir dados no banco de dados
			while (rset.next()) {

				Endereco endereco= new Endereco();
				

				// Recupera o nome do banco e atribui ele ao objeto
				endereco.setCidade(rset.getString("cidade_endereco"));
                                endereco.setBairro(rset.getString("bairro_endereco"));
                                endereco.setRua(rset.getString("rua_endereco"));
                                endereco.setNumero(rset.getString("numero_endereco"));
				return endereco;
			}
		} catch (Exception e) {

			e.printStackTrace();
		} finally {

			try {

				if (rset != null) {

					rset.close();
				}

				if (pstm != null) {

					pstm.close();
				}

				if (conn != null) {
					conn.close();
				}

			} catch (Exception e) {

				e.printStackTrace();
			}
		}

		return null;
    }
    public Endereco getEnderecoPorPessoa(Pessoa pessoa){
        String sql = "Select rua_endereco,cidade_endereco,bairro_endereco,numero_endereco \n" +
        "From pessoa as p,identificacao as i, endereco as e\n" +
        "Where  p.id_endereco=e.id_endereco and " +
        "p.id_identificacao=i.id_identificacao and nome_identificacao=? "
                + "and valor_identificacao=?";

		

		Connection conn = null;
		PreparedStatement pstm = null;
		// Classe que vai recuperar os dados do banco de dados
		ResultSet rset = null;

		try {
			conn = ConnectionFactory.getConexao();

			pstm = conn.prepareStatement(sql);
                        
                        pstm.setString(1, pessoa.getIdentificacao().getNome());
                        pstm.setString(2, pessoa.getIdentificacao().getValor());
                        
			rset = pstm.executeQuery();

			// Enquanto existir dados no banco de dados
			while (rset.next()) {

				Endereco endereco= new Endereco();
				

				// Recupera o nome do banco e atribui ele ao objeto
				endereco.setCidade(rset.getString("cidade_endereco"));
                                endereco.setBairro(rset.getString("bairro_endereco"));
                                endereco.setRua(rset.getString("rua_endereco"));
                                endereco.setNumero(rset.getString("numero_endereco"));
				return endereco;
			}
		} catch (Exception e) {

			e.printStackTrace();
		} finally {

			try {

				if (rset != null) {

					rset.close();
				}

				if (pstm != null) {

					pstm.close();
				}

				if (conn != null) {
					conn.close();
				}

			} catch (Exception e) {

				e.printStackTrace();
			}
		}

		return null;
    }
    public Endereco getEndereco(Endereco aux){
       String sql = "Select * From endereco Where cidade_endereco=?"
               + " and bairro_endereco=? and rua_endereco=? and numero_endereco=?";

		

		Connection conn = null;
		PreparedStatement pstm = null;
		// Classe que vai recuperar os dados do banco de dados
		ResultSet rset = null;

		try {
			conn = ConnectionFactory.getConexao();

			pstm = conn.prepareStatement(sql);
                        pstm.setString(1, aux.getCidade());
                        pstm.setString(2, aux.getBairro());
                        pstm.setString(3, aux.getRua());
                        pstm.setString(4, aux.getNumero());

			rset = pstm.executeQuery();

			// Enquanto existir dados no banco de dados
			while (rset.next()) {

				Endereco endereco= new Endereco();
				

				// Recupera o nome do banco e atribui ele ao objeto
				endereco.setCidade(rset.getString("cidade_endereco"));
                                endereco.setBairro(rset.getString("bairro_endereco"));
                                endereco.setRua(rset.getString("rua_endereco"));
                                endereco.setNumero(rset.getString("numero_endereco"));
				return endereco;
			}
		} catch (Exception e) {

			e.printStackTrace();
		} finally {

			try {

				if (rset != null) {

					rset.close();
				}

				if (pstm != null) {

					pstm.close();
				}

				if (conn != null) {
					conn.close();
				}

			} catch (Exception e) {

				e.printStackTrace();
			}
		}

		return null; 
    }
    }
    
